#
# demoruby server
#
# Author:: krdlab
#
require 'webrick'
include WEBrick
require 'base/app_loader.rb'

# app のロード
info = nil
if ARGV.empty? then
  # demoruby 以下の app を app ルートとする
  demoruby_root = File.dirname(
                    File.expand_path(__FILE__))
  demoruby_app = File.join(demoruby_root, 'app')
  info = AppLoader.new.auto_load(demoruby_app).first
else
  # 引数に指定された dir を app ディレクトリとする
  info = AppLoader.new.load(
              File.expand_path(ARGV[0])).first
end

app_klass = info.app_klass
app_klass.set_app_dir(info.app_dir)
app_klass.init_app

config = app_klass.config

# server のロード
server = HTTPServer.new(
  :Port => config[:port],
  :DocumentRoot => info.app_dir
)
server.mount(config[:mount_point], app_klass)
server.mount(
  "#{config[:mount_point]}/view",
  HTTPServlet::FileHandler,
  File.join(info.app_dir, 'view')
)

['INT', 'TERM'].each {|s|
  Signal.trap(s) { server.shutdown }
}

# 開始
server.start
